<?php

namespace app\service;

use think\Db;
use app\api\controller\Commission;
use app\api\model\YaoqingRecords;
use app\api\model\User;

class CommissionService
{
    /**
     * 统一分佣入口
     * 
     * @param int $user_id 获得收益的用户ID
     * @param int $to_user 来源用户ID
     * @param float $money 金额
     * @param string $channel 渠道类型 (chat, topup, vip, gift等)
     * @param string $content 内容描述
     * @param float $show_money 显示金额（可选）
     * @param int $source_uid 源用户ID（可选）
     * @return bool
     */
    public static function distribute($user_id, $to_user, $money, $channel, $content = '', $show_money = 0, $source_uid = 0)
    {
        // 获取配置
        $useNewSystem = Db::name('config_system')->where(['title' => 'use_new_commission'])->value('content');
        
        $$useNewSystem = false;
        // 如果配置为使用旧系统
        if ($useNewSystem != 1) {
            // 调用旧的分佣逻辑
            $user = new \app\api\model\User();
            return $user->fenchengOld($user_id, $to_user, $money, $channel, $content, $show_money, $source_uid);
        }
        
        // 使用新的分佣系统
        // 如果金额为0，直接返回
        if ($money <= 0) {
            return false;
        }
        
        // 记录用户自己的收益
        YaoqingRecords::index($user_id, $to_user, $money, $content, 1, '', 0, 0, $show_money ?: $money, $source_uid);
        
        // 获取用户信息
        $user = Db::name('user')->where('id', $user_id)->find();
        if (!$user) {
            return false;
        }
        
        // 确定分佣类型和社交类型
        list($type, $social_type) = self::getCommissionType($channel, $content);
        
        // 确定用户性别
        $sex = $user['sex'] == '男' ? 1 : 2;
        
        // 调用Commission计算分佣
        $commission = new Commission();
        $results = $commission->calculateCommission($user_id, $money, $type, $sex, $social_type);
        
        // 处理分佣结果
        foreach ($results as $result) {
            // 更新用户积分和收益
            Db::name('user')->where('id', $result['user_id'])->setInc('score', $result['money']);
            Db::name('user')->where('id', $result['user_id'])->setInc('shouyi', $result['money']);
            
            // 记录分佣记录
            YaoqingRecords::index(
                $result['user_id'], 
                $user_id, 
                $result['money'], 
                $result['remark'] ?? $content, 
                1, 
                '', 
                0, 
                0, 
                $result['money'], 
                $source_uid ?: $user_id
            );
            
            // 检查用户等级
            \app\service\UserLevel::checkUserLevel($result['user_id']);
        }
        
        return true;
    }
    
    /**
     * 根据渠道和内容确定分佣类型和社交类型
     */
    private static function getCommissionType($channel, $content)
    {
        $type = 'social';
        $social_type = 0; // 默认文字
        
        if ($channel == 'topup' || $channel == 'vip') {
            $type = 'recharge';
        } else if ($channel == 'chat' || $channel == 'gift') {
            // 根据内容确定社交类型
            if (strpos($content, '图片') !== false) {
                $social_type = 1;
            } else if (strpos($content, '语音') !== false && strpos($content, '通话') === false) {
                $social_type = 2;
            } else if (strpos($content, '视频') !== false && strpos($content, '通话') === false) {
                $social_type = 3;
            } else if (strpos($content, '语音通话') !== false) {
                $social_type = 9;
            } else if (strpos($content, '视频通话') !== false) {
                $social_type = 10;
            } else if (strpos($content, '回复') !== false) {
                $social_type = 12;
            }
        }
        
        return [$type, $social_type];
    }
}